/*
算法2-8 从单链表 list 中删除第 i 个元素
分数 15
作者 陈越
单位 浙江大学

请编写程序，将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i，
删除链表中第 i 个结点。注意：i 代表位序，从 1 开始。删除结束后，输出链表长度，
并顺序输出链表中的每个结点的数值。
输入格式：

输入首先在第一行给出正整数 n（≤10^4）；随后一行给出 n 个 int 范围内的整数，
数字间以空格分隔；最后一行给出删除位序 i，为 int 范围内的整数。
输出格式：

如果删除的位置不合法，则不能删除，在一行中输出句子 错误：删除位置不合法。
无论是否删除成功，都按照题面描述的要求，在一行中输出链表信息，格式为：

表长: x1 x2 ... xn

注意数字间有 1 个空格分隔，行首尾无多余空格。

输入样例 1：

5
1 2 3 4 5
3

输出样例 1：

4: 5 4 2 1

输入样例 2：

5
4 3 6 8 0
0

输出样例 2：

错误：删除位置不合法。
5: 0 8 6 3 4
*/

#include <iostream>
#include "../base/LinkedList.cpp"

using namespace std;

int main() {
    int n;
    cin >> n;

    LinkedList *list = init();
    for (int i = 0; i < n; ++i) {
        int x;
        cin >> x;
        insert(list, 1, x);
    }
    // print(list);

    int i;
    cin >> i;
    if (i < 1 || i > n) {
        cout << "错误：删除位置不合法。" << endl;
    } else {
        remove(list, i);
    }

    print(list);

    return 0;
}

// #include <vector>
// int main() {
//     int n;
//     cin >> n;
//     vector<int> list;
//     for (int i = 0; i < n; ++i) {
//         int x;
//         cin >> x;
//         list.push_back(x);
//     }

//     int i;
//     cin >> i;
//     if (i < 1 || i > n) {
//         cout << "错误：删除位置不合法。" << endl;
//     } else {
//         list.erase(list.begin() + i - 1);
//     }

//     cout << list.size() << ":";
//     for (int i = list.size()-1; i >= 0; --i) {
//         cout << " " << list[i];
//     }
//     cout << endl;

//     return 0;
// }